/**
 * 测试beforeClose优化逻辑
 */

// 模拟Page对象
const page = {
  data: {
    adding: false,
    showAddDialog: true,
    phone: ''
  },

  setData(data) {
    console.log('setData:', data)
    Object.assign(this.data, data)
  },

  beforeClose(action) {
    console.log('beforeClose called, action:', action)
    console.log('adding status:', this.data.adding)
    
    // 如果正在添加中，阻止关闭
    if (this.data.adding) {
      console.log('阻止关闭：正在添加中')
      return false
    }

    // 如果是确认按钮触发的关闭，需要先验证
    if (action === 'confirm') {
      const phone = this.data.phone.trim()
      
      console.log('验证手机号:', phone)
      
      // 验证手机号是否为空
      if (!phone) {
        console.log('验证失败：手机号为空')
        return false
      }

      // 验证手机号格式
      if (!/^1[3-9]\d{9}$/.test(phone)) {
        console.log('验证失败：手机号格式不正确')
        return false
      }

      console.log('验证通过，执行添加逻辑')
      // 验证通过，允许关闭并执行添加逻辑
      this.onConfirmAddMember()
      return false // 阻止默认关闭，由onConfirmAddMember处理
    }
    
    console.log('正常关闭')
    // 其他情况（取消按钮、点击遮罩等）正常关闭
    this.onCloseAddDialog()
    return true
  },

  onCloseAddDialog() {
    console.log('弹窗关闭')
    this.setData({
      showAddDialog: false,
      phone: '',
      adding: false
    })
  },

  async onConfirmAddMember() {
    console.log('执行添加员工逻辑')
    const phone = this.data.phone.trim()

    try {
      this.setData({
        adding: true
      })

      // 模拟API调用
      const result = await this.mockApiCall()

      if (result.success) {
        console.log('添加成功')
        this.setData({
          adding: false,
          showAddDialog: false,
          phone: ''
        })
      } else {
        console.log('添加失败')
        this.setData({
          adding: false
        })
      }
    } catch (error) {
      console.log('网络错误')
      this.setData({
        adding: false
      })
    }
  },

  // 模拟API调用
  mockApiCall() {
    return new Promise((resolve) => {
      setTimeout(() => {
        // 模拟失败情况
        resolve({ success: false, message: '该手机号未注册会员' })
      }, 1000)
    })
  }
}

// 测试场景1：手机号为空
console.log('=== 测试场景1：手机号为空 ===')
page.data.phone = ''
const result1 = page.beforeClose('confirm')
console.log('结果:', result1)

// 测试场景2：手机号格式错误
console.log('\n=== 测试场景2：手机号格式错误 ===')
page.data.phone = '123'
const result2 = page.beforeClose('confirm')
console.log('结果:', result2)

// 测试场景3：手机号正确
console.log('\n=== 测试场景3：手机号正确 ===')
page.data.phone = '13800138000'
const result3 = page.beforeClose('confirm')
console.log('结果:', result3)

// 测试场景4：正在添加中
console.log('\n=== 测试场景4：正在添加中 ===')
page.data.adding = true
const result4 = page.beforeClose('cancel')
console.log('结果:', result4)

console.log('\n=== 测试完成 ===') 